﻿//using System;
//using System.Collections.Generic;
//using System.Text;

//namespace ttbit.core
//{
//    public static class FileLoader
//    {
//        static FileLoader()
//        {
//            Resource = new FileHelper(Env.platform.ResourcePath);
//            UserData = new FileHelper(Env.platform.UserDataPath);
//        }
//        static public FileHelper Resource
//        {
//            get;
//            private set;
//        }
//        static public FileHelper UserData
//        {
//            get;
//            private set;
//        }
//    }
//    public class FileHelper
//    {
//        internal FileHelper(string path)
//        {
//            this.path = path;
//        }
//        string path;
//        //文件用hash保存在cache，Use 表示切换版本，轻易不删除Cache
//        public bool Cache_Have(string hash, int length)
//        {
//            var cachedir = System.IO.Path.Combine(path, "_cache_");
//            if (System.IO.Directory.Exists(cachedir) == false)
//            {
//                System.IO.Directory.CreateDirectory(cachedir);
//            }
//            var name = System.IO.Path.Combine(cachedir, hash + ".bin");
//            if (System.IO.File.Exists(name))
//            {
//                var finfo = new System.IO.FileInfo(name);
//                if (finfo.Length == length)
//                    return true;
//                else
//                    return false;
//            }

//            return false;

//        }
//        public void Cache_Save(string hash, byte[] data)
//        {
//            var cachedir = System.IO.Path.Combine(path, "_cache_");
//            if (System.IO.Directory.Exists(cachedir) == false)
//            {
//                System.IO.Directory.CreateDirectory(cachedir);
//            }

//            var name = System.IO.Path.Combine(cachedir, hash + ".bin");
//            bool needwrite = false;
//            if (System.IO.File.Exists(name))
//            {
//                var finfo = new System.IO.FileInfo(name);
//                if (finfo.Length != data.Length)
//                    needwrite = true;
//            }
//            else
//            {
//                needwrite = true;
//            }

//            if (needwrite)
//            {
//                System.IO.File.WriteAllBytes(name, data);
//            }

//        }
//        public bool Cache_Use(string filename, string hash, int size)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var cachedir = System.IO.Path.Combine(path, "_cache_");
//            var name = System.IO.Path.Combine(cachedir, hash + ".bin");
//            var destname = System.IO.Path.Combine(path, filename);

//            if (System.IO.File.Exists(name))
//            {
//                var finfo = new System.IO.FileInfo(name);
//                if (finfo.Length == size)
//                {
//                    var destdir = System.IO.Path.GetDirectoryName(destname);
//                    if (System.IO.Directory.Exists(destdir) == false)
//                        System.IO.Directory.CreateDirectory(destdir);
//                    System.IO.File.Copy(name, destname, true);
//                    return true;
//                }
//                else
//                {
//                    return false;
//                }
//            }
//            return false;
//        }

//        public bool Have(string filename)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var destname = System.IO.Path.Combine(path, filename);
//            return System.IO.File.Exists(destname);
//        }
//        public string GetFullName(string filename)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var destname = System.IO.Path.Combine(path, filename);
//            return destname;

//        }
//        public System.IO.Stream OpenRead(string filename)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var destname = System.IO.Path.Combine(path, filename);
//            return System.IO.File.OpenRead(destname);
//        }
//        public byte[] ReadAllBytes(string filename)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var destname = System.IO.Path.Combine(path, filename);
//            return System.IO.File.ReadAllBytes(destname);
//        }
//        public string ReadAllText(string filename)
//        {
//            if (System.IO.Path.AltDirectorySeparatorChar == '/')
//                filename = filename.Replace("\\", "/");
//            var destname = System.IO.Path.Combine(path, filename);
//            return System.IO.File.ReadAllText(destname);
//        }
//    }
//}
